import TalentExecute from 'code/Scripts/Abilities/Talents/elf/TalentExecute';
import TalentFetter from 'code/Scripts/Abilities/Talents/elf/TalentFetter';
import TalentGroth from 'code/Scripts/Abilities/Talents/elf/TalentGroth';
import TalentMonnShoot from 'code/Scripts/Abilities/Talents/elf/TalentMonnShoot';
import TalentMoreBetter from 'code/Scripts/Abilities/Talents/human/TalentMoreBetter';
import TalentOmnipotentArur from 'code/Scripts/Abilities/Talents/human/TalentOmnipotentArur';
import TalentSniperGun from 'code/Scripts/Abilities/Talents/human/TalentSniperGun';
import TalentSoulOfFire from 'code/Scripts/Abilities/Talents/human/TalentSoulOfFire';
import TalentCorrosion from 'code/Scripts/Abilities/Talents/orc/TalentCorrosion';
import TalentKnifeFire from 'code/Scripts/Abilities/Talents/orc/TalentKnifeFire';
import TalentMissileBonce from 'code/Scripts/Abilities/Talents/orc/TalentMissileBonce';
import TalentReflectRotate from 'code/Scripts/Abilities/Talents/orc/TalentReflectRotate';
import TalentAlchemy from 'code/Scripts/Abilities/Talents/other/TalentAlchemy';
import TalentCollectSoul from 'code/Scripts/Abilities/Talents/other/TalentCollectSoul';
import TalentDrunkenFirst from 'code/Scripts/Abilities/Talents/other/TalentDrunkenFirst';
import TalentInheritanceOfGhost from 'code/Scripts/Abilities/Talents/other/TalentInheritanceOfGhost';
import TalentReflectHit from 'code/Scripts/Abilities/Talents/other/TalentReflectHit';
import TalentRepireAtWill from 'code/Scripts/Abilities/Talents/other/TalentRepireAtWill';
import TalentVulnerabilityCurse from 'code/Scripts/Abilities/Talents/other/TalentVulnerabilityCurse';
import TalentMultipleMissile from 'code/Scripts/Abilities/Talents/undeath/TalentMultipleMissile';
import TalentSadOfForst from 'code/Scripts/Abilities/Talents/undeath/TalentSadOfForst';
import TalentSpikyShell from 'code/Scripts/Abilities/Talents/undeath/TalentSpikyShell';
import TalentTransferPlague from 'code/Scripts/Abilities/Talents/undeath/TalentTransferPlague';
import TalentBase from 'code/Scripts/Abilities/base/TalentBase';

export default class TalentManager {
    TalentExecute: TalentExecute;
    TalentMissileBonce: TalentMissileBonce;
    TalentKnifeFire: TalentKnifeFire;
    TalentReflectHit: TalentReflectHit;
    TalentReflectRotate: TalentReflectRotate;
    TalentCorrosion: TalentCorrosion;
    TalentMultipleMissile: TalentMultipleMissile;
    TalentOmipotentArur: TalentOmnipotentArur;
    TalentSadOfForst: TalentSadOfForst;
    TalentSoulOfFire: TalentSoulOfFire;
    TalentTransferPlague: TalentTransferPlague;
    TalentMoreBetter: TalentMoreBetter;
    TalentFetter: TalentFetter;
    TalentSpikyShell: TalentSpikyShell;
    TalentSniperGun: TalentSniperGun;
    TalentRepireAtWill: TalentRepireAtWill;
    TalentInheritanceOfGhost: TalentInheritanceOfGhost;
    TalentVulnerabilityCurse: TalentVulnerabilityCurse;
    TalentGroth: TalentGroth;
    TalentDrunkenFirst: TalentDrunkenFirst;
    TalentAlchemy: TalentAlchemy;
    TalentCollectSoul: TalentCollectSoul;
    TalentMonnShoot: TalentMonnShoot;

    talents: { [key: string]: TalentBase } = {};
    constructor() {
        this.TalentExecute = new TalentExecute();
        this.talents[this.TalentExecute.id] = this.TalentExecute;
        this.TalentMissileBonce = new TalentMissileBonce();
        this.talents[this.TalentMissileBonce.id] = this.TalentMissileBonce;
        this.TalentKnifeFire = new TalentKnifeFire();
        this.talents[this.TalentKnifeFire.id] = this.TalentKnifeFire;
        this.TalentReflectHit = new TalentReflectHit();
        this.talents[this.TalentReflectHit.id] = this.TalentReflectHit;
        this.TalentReflectRotate = new TalentReflectRotate();
        this.talents[this.TalentReflectRotate.id] = this.TalentReflectRotate;
        this.TalentCorrosion = new TalentCorrosion();
        this.talents[this.TalentCorrosion.id] = this.TalentCorrosion;
        this.TalentMultipleMissile = new TalentMultipleMissile();
        this.talents[this.TalentMultipleMissile.id] = this.TalentMultipleMissile;
        this.TalentOmipotentArur = new TalentOmnipotentArur();
        this.talents[this.TalentOmipotentArur.id] = this.TalentOmipotentArur;
        this.TalentSadOfForst = new TalentSadOfForst();
        this.talents[this.TalentSadOfForst.id] = this.TalentSadOfForst;
        this.TalentSoulOfFire = new TalentSoulOfFire();
        this.talents[this.TalentSoulOfFire.id] = this.TalentSoulOfFire;
        this.TalentTransferPlague = new TalentTransferPlague();
        this.talents[this.TalentTransferPlague.id] = this.TalentTransferPlague;
        this.TalentMoreBetter = new TalentMoreBetter();
        this.talents[this.TalentMoreBetter.id] = this.TalentMoreBetter;
        this.TalentFetter = new TalentFetter();
        this.talents[this.TalentFetter.id] = this.TalentFetter;
        this.TalentSpikyShell = new TalentSpikyShell();
        this.talents[this.TalentSpikyShell.id] = this.TalentSpikyShell;
        this.TalentSniperGun = new TalentSniperGun();
        this.talents[this.TalentSniperGun.id] = this.TalentSniperGun;
        this.TalentRepireAtWill = new TalentRepireAtWill();
        this.talents[this.TalentRepireAtWill.id] = this.TalentRepireAtWill;
        this.TalentInheritanceOfGhost = new TalentInheritanceOfGhost();
        this.talents[this.TalentInheritanceOfGhost.id] = this.TalentInheritanceOfGhost;
        this.TalentVulnerabilityCurse = new TalentVulnerabilityCurse();
        this.talents[this.TalentVulnerabilityCurse.id] = this.TalentVulnerabilityCurse;
        this.TalentGroth = new TalentGroth();
        this.talents[this.TalentGroth.id] = this.TalentGroth;
        this.TalentDrunkenFirst = new TalentDrunkenFirst();
        this.talents[this.TalentDrunkenFirst.id] = this.TalentDrunkenFirst;
        this.TalentAlchemy = new TalentAlchemy();
        this.talents[this.TalentAlchemy.id] = this.TalentAlchemy;
        this.TalentCollectSoul = new TalentCollectSoul();
        this.talents[this.TalentCollectSoul.id] = this.TalentCollectSoul;
        this.TalentMonnShoot = new TalentMonnShoot();
        this.talents[this.TalentMonnShoot.id] = this.TalentMonnShoot;
    }
    getTalentById(id: string): TalentBase {
        return this.talents[id];
    }
}
